<?php
include_once "../funciones/funciones_php.php";

//obtiene las encomiendas que pertenescan a la orden, destino y proveedor indicados
function getEncomiendasOrden($idOrden, $idOrigen, $idDestino, $idProveedor)
{
   conectar();
   
   $sql = sprintf("SELECT of.id_orden_flete, of.id_comuna, of.id_comuna_origen, enc.id_tipo_encomienda, denc.id_detalle_encomienda, denc.codigo_barra,
                   dest.id_destino, dest.destino, cd.comuna, orig.id_destino as id_origen, orig.destino as origen, co.comuna as comuna_origen, tenc.tipo
                   FROM detalle_encomienda denc, orden_flete of, encomienda enc, destino orig, comuna co, destino dest, comuna cd, tipo_encomienda tenc
                   WHERE of.id_orden_flete = '%s'
                   AND of.id_comuna_origen IN (SELECT id_comuna FROM comuna WHERE id_destino = '%s')
                   AND co.id_comuna = of.id_comuna_origen
                   AND orig.id_destino = co.id_destino
                   AND of.id_comuna IN (SELECT id_comuna FROM comuna WHERE id_destino = '%s')
                   AND cd.id_comuna = of.id_comuna
                   AND dest.id_destino = cd.id_destino
                   AND enc.id_orden_flete = of.id_orden_flete
                   AND tenc.id_tipo_encomienda = enc.id_tipo_encomienda
                   AND denc.id_encomienda = enc.id_encomienda
                   AND denc.id_proveedor = '%s'
                   AND denc.estado_despacho = true
                   AND denc.estado_finiquito = true
                   AND denc.estado_llegada = true
                   AND denc.id_master_encomienda is null",
                   pg_escape_string($idOrden),
                   pg_escape_string($idOrigen),
                   pg_escape_string($idDestino),
                   pg_escape_string($idProveedor));
   
   $consulta = pg_query($sql);
   
   if(!$consulta) return false;
   
   $numFilas = pg_num_rows($consulta);
   
   if( $numFilas > 0 )
   {
      return pg_fetch_all($consulta);   
   }
   
   return false;
   
}

function ingresarMaster($form)
{
   $sql = sprintf("INSERT INTO master (numero_orden, id_empleado, id_comuna_origen, id_comuna_destino, id_proveedor, id_tipo_envio,
                  fecha, flete, seguro, manejo, otros, total, nombre_consignatario, direccion_consignatario,
                  numero_direccion_consignatario, telefono_consignatario, id_empleado_digito)
                  VALUES ( '%s', '%s', '%s', '%s', '%s', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%s', '%s', '%s', '%s', '%s')
                  RETURNING id_master",
                  pg_escape_string($form['numero_orden']),
                  pg_escape_string($form['id_agente']),
                  pg_escape_string($form['id_comuna_origen']),
                  pg_escape_string($form['id_comuna_destino']),
                  pg_escape_string($form['id_proveedor']),
                  pg_escape_string($form['id_tipo_envio']),
                  pg_escape_string($form['fecha']),
                  pg_escape_string($form['flete']),
                  pg_escape_string($form['seguro']),
                  pg_escape_string($form['manejo']),
                  pg_escape_string($form['otros']),
                  pg_escape_string($form['total']),
                  pg_escape_string($form['nombre_consignatario']),
                  pg_escape_string($form['direccion_consignatario']),
                  pg_escape_string($form['numero_direccion_consignatario']),
                  pg_escape_string($form['telefono_consignatario']),
                  pg_escape_string($_SESSION['id_usuario']));
   
   $consulta = pg_query($sql);
   if($consulta)
   {
     $idMaster = pg_fetch_array($consulta);
     return $idMaster[0];
   }
   
   return false;
}

function marcarBultoConMaster($idMasterEncomienda, $idOrden, $bulto)
{
   $sql = sprintf("UPDATE detalle_encomienda
                      SET id_master_encomienda = '%d'
                      WHERE id_encomienda = (SELECT id_encomienda
                                             FROM encomienda
                                             WHERE id_orden_flete = '%d'
                                             AND id_tipo_encomienda = '%d' )",
            pg_escape_string($idMasterEncomienda),
            pg_escape_string($idOrden),
            pg_escape_string($bulto));
   
   $consulta = pg_query($sql);
   
   if($consulta)
   {
      return true;
   }
   
   return false;
}



//ingresa el bulto a master encomienda y retorna el id
function ingresarBultoMaster($idMaster, $tipoBulto, $cantidad, $peso = 0, $volumen = 0 )
{
   $sql = sprintf("INSERT INTO master_encomienda (id_master, id_tipo_encomienda, cantidad_carga, peso_carga, volumen_carga )
                  VALUES ('%d', '%d', '%d', '%f', '%f') RETURNING id_master_encomienda",
                  pg_escape_string($idMaster),
                  pg_escape_string($tipoBulto),
                  pg_escape_string($cantidad), 
                  pg_escape_string($peso),
                  pg_escape_string($volumen));
   
   $consulta = pg_query($sql);
   
   if($consulta)
   {
     $idMasterEncomienda = pg_fetch_array($consulta);
     return $idMasterEncomienda[0];
   }
   return false;
}


//Comprueba que la orden tenga algun bulto que no pertenescan a algun master
function existeBultoEnMaster($idOrden)
{
   $sql = sprintf("SELECT of.id_orden_flete, denc.id_master_encomienda
                   FROM detalle_encomienda denc, encomienda enc, orden_flete of
                   WHERE enc.id_orden_flete = '%d'
                   AND denc.id_encomienda = enc.id_encomienda
                   AND denc.id_master_encomienda is null",
                   pg_escape_string($idOrden));
   $consulta = pg_query($sql);
   $numFilas = pg_num_rows($consulta);
   
   //Si existe
   if($numFilas > 0)
   {
      return true;
   }
   
   return false;
}